{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第5章 参数估计"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 初始化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 本章需要用到的库\n",
    "import numpy as np # 导入numpy库\n",
    "import pandas as pd # 导入pandas库\n",
    "import matplotlib.pyplot as plt # 导入matplotlib库\n",
    "import scipy.stats as st # 导入scipy库的stats模块\n",
    "from scipy.stats import norm, t, chi2, f# 导入正态分布、t分布、卡方分布、F分布\n",
    "from statsmodels.stats.weightstats import ttest_ind # 导入独立样本t检验\n",
    "\n",
    "# 设置初始化\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.1 参数估计的原理"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.1.1 点估计与区间估计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "重复构造出的100个置信区间中，有5个未包含真值50。\n"
     ]
    },
    {
     "data": {
      "image/png": "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c0+K8t1330kXszJlM8rYmrryziEiycnJSE9Px759+9C4cWP0798frVu3xvz58/HFF1/g8OHD2Llzp82hGWWz3tzZahkSEmI1DWdxcTFGjRqFTZs2wcvLy6LF5cKFCzh48KD0YC5/f3907drVqhBKS0tD69atyx1eVN2pMMs0btzY4u87hy3c6c7W9OTkZAClN/A2b94cMTExOHr0KJYsWQKgtEA7fvw47r///mrvy16vvvoqxo8fjwULFqBJkyaYMWMGevbsKd1nUNnrzhYYGGjzZsabN29aTPNZmcp6QSp6PSQkBA8//DD69euHF154wer1F154AV27drVKz535a8OGDeW27FdUqQCAd955B2lpaWjfvn2F77OV7o0bN1r1TvXv3x/PP/88fH194e3tjbfffhs//vijNEStbGabmzdv4u9//zt++eUXTJo0CZ06dUK7du0QGBgoVfg7deqE4uJiGI1G3L59GwMHDsTs2bNRUFCAhQsXSvssLi7GqlWrLKbCLBtzv3//ful9RqPR5ph/oPR8fuKJJ3D79m1s3bpVOm5Tp06VbsK8ceNGlR5EZE/+rs7xuJuz8rcjebuoqAg9evTA3r17sWHDBjRq1Mjm59q1a4eff/4Zzz33HB5//HHMmTPHaVOClqnO8QwLC0N8fDwaNGiACxcu4Ntvv8WGDRsAlM501L17d0yePBn+/v64ffs2PvjgAwwbNgz16tWTtnH16lVERkbCz88PjRo1wsGDB/Hll1+67JpGysLgnhQjLy8PPXv2RGFhoUUrha157stuHiwqKpIC/zFjxmD06NHS55csWYJ+/fqhV69e8PPzw6pVq+wawlJcXGxz2E/ZNJz5+fn49NNP0aJFC+nCn5SUhClTpuDtt99GUFAQHnnkEXTo0AGxsbH47rvvUKtWLYSGhkrv//HHH5GVlYXk5GSLMZgGgwEzZ84sd95re1pwynoDfvzxR6nAWLx4sUWXuslkwrx581BQUIDVq1dLragHDx6Et7c3li9fjokTJyI9PR0dOnTAt99+i0GDBmHHjh145ZVXnLIve7366qvIycnBnDlzkJeXh6eeegoff/yx3a9X9lvZ8/TRkpISqYUuPz9fesrl3e6umN35uTvXlb2v7Aml5VVeS0pKLKYRLVM2jWBRURHGjBkDADZnkQkJCZGe5Fq2D4PBIOVvW3NnX7lyBX/88QeSk5OtWhSB0qFjfn5+GDRoULmfr0xZYG82m6UKro+PT4XD2Ly8vBAYGAhfX1+0bt0aXbp0keYXNxgMAEqHgvTt2xfXr1+3CB6//vprrF69GgMGDLDY5vfff4933nkHvr6+0rmVn58Pk8lkMad5SUkJiouLcfjwYat0/frrrxg4cCBu3ryJ7du3WwRgd1Zkjxw5YvOZFxWxJ39X93g4K39XNW/7+/vjnXfeweXLl9GrVy+L9xoMBqvrXosWLXD06FEsW7bMamx+Rem2p+Gkusdz7ty50vCisLAwJCUl4ZlnnpFeX7NmDcaNG4cRI0ZACIFBgwZh/vz5FtvYuHGjNP3lww8/jPvuuw8LFy7EmjVrKk0/aYALH5BF5FRhYWHSU2EdWV599VUhhBA5OTli2LBhok+fPqJTp06iVq1aws/PTzz99NPio48+EuPHjxfR0dHCy8tLNGnSRDz44IOia9eu4sqVK1ZpGTlypOjTp4/NtA4cOFAEBgaKbt26iZ9//lkIUfrU027duolvv/1Wel9mZqb44IMPxAsvvCAeeOAB0aBBA1GzZk3pqbv4/6dS3v0E0IyMDJGSklLpcvr0aQHA6umRGRkZok6dOhbfbdmyZeJf//qXxft69uwpHnjgAfHKK6+IrKwsIYQQTz/9tGjdurU9h6za+5KD9957T3h7e1f4nszMTOHt7S1CQkKkp53WqVPH5hIWFiYd5+bNm1ttr3nz5mL58uVCCCG++uor0ahRo3L3GxcXJwYOHGi1/vHHHy/3qb8VLUlJSdLnfX19xcaNGyv8znv37hUARMOGDcWRI0esXl+9erVTjuOUKVNEhw4dyn1t1qxZonPnzg5tb82aNQKA9GTRigwcOFA8+OCD4rHHHhPdu3eXlo4dO4qIiAiLdd27dxddu3YVLVu2FO+//760jWnTpgm9Xi/q1q1b7u+0adMmMWrUKNGnTx+h0+lc8rRfIap3PJyZv6ubt+9OV8+ePUXt2rVFx44dq/TdyiQnJwsA4sKFCxW+Ty7Hk6giDO5JU6ZPny5ee+018dFHH4k9e/aUW8CfPHlSrFq1SkydOlW88cYbVdpPXl6eMJlM1U2uKC4uFrm5uaK4uLhKn8/NzRUAxLZt26qdljK1a9cWcXFxTtue3M2cOVMAEAaDwW37rFevnli8eLFb9mU2m0VxcbHDecxoNIpz5865KFV/euONN0SbNm3KfW3WrFmiXbt2Dm3v888/FwBETk6OM5JXqQsXLogBAwaItLS0cl8/deqUCAoKEs2aNROjRo0S2dnZbkmXpzg7b//73/8WiYmJ4tatW9Xazs8//ywAiBMnTlT4Ph5PUgKdEE4avEtEqnflyhU0atQIK1assHgKLZEnGAwGGI1GiwcHERFpHYN7IiIiIiKV4FSYREREREQqweCeiIiIiEglGNwTEREREamEqua5N5vNuHbtGkJCQvi0NiIiIiJSBSEEcnNzUbdu3UofAKeq4P7atWto0KCBp5NBREREROR0KSkpqF+/foXvUVVwHxISAqD0i9vzlFEiIiIiIrnLyclBgwYNpFi3IqoK7suG4oSGhjK4JyIiIiJVsWfYOW+oJSIiIiJSCQb3REREREQqweCeiIiIiEglGNwTEREREakEg3siIiIiIpVgcE9EREREpBIM7omIiIiIVILBPRERERGRSjC4JyIiIiJSCQb3REREREQqweCeiIiIiEglGNwTETnJ6NGeTgEREWkdg3siIie5etXTKSAiIq1jcE9EREREpBIM7omIiIiIVILBPRERERGRSjC4JyIiIiJSCY8F9x06dIBOp5OWiIgIAIDRaERcXBxCQkLQvHlzHDhwwFNJJCIiIiJSFI8F91lZWdiyZQsyMzORmZmJCxcuAADmzZuHS5cu4ciRIxgwYAAGDx7sqSQSERERESmKt6d2nJ2djcaNGyM8PNxi/YoVK/DVV18hJiYG48ePR/PmzWE2m6HXcwQREREREVFFPNpyP23aNAQEBKBVq1Y4ceIE0tPTceHCBezatQthYWHo0qULHnjgAQb2RERERER28EjUXFxcjKKiIsTExODkyZNo3rw5RowYgbS0NOj1evz666/47bff0KxZM4waNcrmdgwGA3JyciwWIiIiIiKt8siwHB8fH6SmpqJevXoAgHHjxqFDhw7Iy8uDyWTC9OnTER0djVdeeQUdO3ZEcXExfH19rbaTkJCAmTNnujv5RERERESy5JGWe51OJwX2AFCjRg0AgNlsBgDUrFkTAFCrVi0IIXD79u1ytzNp0iRkZ2dLS0pKiotTTkREREQkXx4J7jdt2oSmTZtKf1+5cgWBgYFo164dfHx8cObMGQBARkYGvLy8pGky7+bn54fQ0FCLhYiIiIhIqzwS3Ldv3x7X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",
      "text/plain": [
       "<Figure size 900x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 置信区间可视化\n",
    "plt.figure(figsize=(9, 4)) # 设置画布大小\n",
    "\n",
    "np.random.seed(15) # 设置随机种子，保证可复现性\n",
    "\n",
    "mu = 50 # 设置均值\n",
    "sigma = 5 # 设置标准差\n",
    "count = 0 # 设置计数器\n",
    "for i in range(100):\n",
    "    S = np.random.normal(loc=mu, scale=sigma, size=10) # 生成10个样本\n",
    "    S_mean = np.mean(S) # 计算S的均值\n",
    "    S_std = np.std(S, ddof=1) # 计算S的标准差\n",
    "    S_se = S_std/np.sqrt(len(S)) # 计算S的标准误差\n",
    "    S_ci = norm.interval(0.95, loc=S_mean, scale=S_se) # 计算S的95%置信区间\n",
    "    if mu < S_ci[0] or mu > S_ci[1]: # 判断置信区间是否包含真值\n",
    "        count += 1\n",
    "    plt.plot([i, i], S_ci, color='b', linewidth=0.5) # 绘制置信区间\n",
    "    plt.plot(i, S_mean, marker='o', color='b', markersize=3) # 绘制样本均值\n",
    "\n",
    "# 这里只是经过多次模拟恰好选择的一个seed，如果换成其他的seed，结果可能会不同，请不要将此结果作为绝对的结论。\n",
    "print(f'重复构造出的100个置信区间中，有{count}个未包含真值{mu}。')\n",
    "\n",
    "plt.axhline(y=mu, color='b', linestyle='-', linewidth=1.5) # 绘制真值\n",
    "plt.xlabel('样本序号') # 设置x轴标签\n",
    "plt.ylabel('样本均值') # 设置y轴标签\n",
    "plt.title('重复构造出的$\\mu$的100个置信区间，样本量为10，置信水平为95%') # 设置标题\n",
    "plt.show() # 显示图形\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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zk5ERPalEj7zgIiInFBqaiqysrLMJnjk+LRaLbKyspTnUdsiKysLsbGxCA8PL4SSERGRK2LiTERERERERGQBR5UgIiIiIiIisoCJMxEREREREZEFTJyJiIiIiIiILGDiTERERERERGQBE2ciIiIiIiIiC5g4ExEREREREVnAxJmIiIiIiIjIAibORERERERERBYwcSYiIiIiIiKygIkzERERERERkQVMnImIiIiIiIgsYOJMREREREREZAETZyIiIiIiIiILmDgTERERERERWcDEmYiIiIiIiMgCJs5EREREREREFjBxJiIiIiIiIrKAiTMRERERERGRBUyciYiIiIiIiCxg4kxERERERERkARNnIiIiIiIiIguYOBMRERERERFZwMSZiIiIiIiIyAImzkREREREREQWMHEmIiIiIiIisoCJMxEREREREZEFTJyJiIiIiIiILGDiTERERERERGQBE2ciIiIiIiIiC5g4ExEREREREVnAxJmIiIiIiIjIAibORERERERERBYwcSYiIiIiIiKygIkzERERERERkQVMnImIiIiIiIgsYOJMREREREREZAETZyIiIiIiIiILmDgTERERERERWcDEmYiIiIiIiMgCJs5EREREREREFjBxdhHp6ek4c+aMVcueOXMG6enphVwi55GRkWHVcnfv3kVycrLJ/IsXL2Lfvn32LlaePv30U3z33XdG827cuIE+ffrgwIEDRVaOkiAmJsbs/AsXLtj1c7RabZ7HUUJCgl0/i4icly2xPiYmBv/++28hl8h5WBvrU1JSEB8fbzL/xo0b2Lp1q72LlacFCxZg5syZyMzMVOZlZGSgZ8+e+O2334qsHCVBbGys2fnnz5+36+fodLo8r68TExMhInb9PLI/Js4uQETQt29ffPXVV1Yt/9VXX6Fv3778A85lz5496Ny5MzQajdH89u3bY9SoUfmu/91336F69eomyfP69esxduzYfNc/ePAgGjRoYHLSnTNnDho3bozLly/nu43MzEx88cUX2L17N9LT06HT6QAASUlJWLZsGXx9fZVls7OzjQJuSdKsWTPUrl3b6unvv/822UZ8fDyqV6+OOXPmGM0/fPgw6tevj7i4OItlCA8Ph0qlsmpyd3dHkyZNzJahWrVqWLVqFQB9En3p0iXExsYiLi7OZDL8nkTkemyN9cuXL8err75a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LG3D8N6SJUtw5coVzJo1C5mZmdi8eTOCgoIwdOhQk+2lpaUpPdJiYmKQmJiIe/fuKa9nzZqFO3fumFQsDR48GB9//LHRvHLlyiEjIwM6nU5pYc4Z6zMzM83eWmWOoXu3v78/Ro4cafIoUkvq1q2rxPpu3bpZvR4VPibOTiwkJAQPHjwwOcE3atQI9evXx4cffohmzZqhcuXKyM7ORlpamtFyGo0GqampBb5vtUmTJmjcuLHyukyZMkqSEBYWBg8PD7NTzvteLH03T09Pk8QnKSkJHh4eD3WvbW4ignHjxkH0g+lBRBAbG4tp06YhOztbmZeVlYVXX33VaF0fHx/MnTvXJJhs374df//9N/r376/M69SpEzw9Pc3ez52ffv364YsvvsB7772HvXv3mtRCBwcH5xnQunfvrrTmGqacz3g0mDt3LhISElCtWjW8+eabStd+Qw1uq1at8PLLLyvLG1p+r1+/btV3KF++PAAY/aZJSUlG77m7u6N69epYtGgR+vTpg88++wxLly7F5MmTTVoA3N3dsWDBgjwvfsaMGWO2y5W5WmE3NzeLXbEtvZfTmjVr8O677+Knn37Chg0bsGHDBrzyyitWJ885j8Hc93sRkWvKK9YDQMuWLZVzv1qtxtNPP610lc3p1q1bZp8va40KFSoY3XKSM9a3bds2z1j/1ltvWbX98uXLm431hvfsRUTQu3dvo/Ps3bt38fnnnyM1NdVofs5bfgD9vv3qq6+ULtQG58+fx2+//YZBgwYp8xo0aIBGjRpZ1XU3t2effRbr1q3D559/jlWrVpnEeh8fH5Ou1wbvv/++SazPHZ9v3bqF2bNnY+rUqfjf//6H5557Dj///DMOHTqEdevW2eXay1ysN2zD8J5KpUJYWBh+/PFH9O3bF5988gm++uorrFy50qglHdDH+i1btuQZ63v06KEsl1vueK9SqUzumc7Jw8PDqsqB/fv344033sD06dOxb98+nDlzBm3atLE6eb527ZpyrG3cuNGqdahoMHF2ck888YRRSyQALFy4EC1btkRiYiIiIyNx7tw5ZcCpnPbv34+GDRsW+LPN1WQabNy4EUePHjU7DRw40Krt165dG+fPnzead+HCBdSuXduutdATJ05E165dERcXh+DgYPzxxx/w9/fHvHnzjGorP/74Y0RERODy5csWt5eamorIyEgMHTrU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RGQNe8R7xnoiInImVifOW7duxfHjxzFu3Dij+ampqdBqtZgwYQKqVauGoUOHYvfu3cjMzMxzW2PGjEFSUpIy3bhxo+DfgIiIiOzGXvGesZ6IiJyJ1YnzqlWrcOvWLVSsWBHBwcFISkpCx44d8ccffwAASpcuDQAICQmBiOD+/ft5bsvLywuBgYFGEzkGduUlInJt9or3jPVERORMrE6cZ8yYgYsXLyIqKgpRUVEICAjAokWLMGrUKHh4eODSpUsAgDt37kCtViM0NLTQCp0fJn8Fx668RESurSTFeyIioqJi9ajaoaGhRsHRzc0N5cuXR0BAADp37oyJEydi/vz5+Oqrr/Diiy/C3d3mAbvthskfERFRwZSkeE9Fiw0TROTK7PL8iG+++QYigvr16+POnTuYN2+ePTZLREREDoTx3rWxYYIeVlwccPeu/l+ikqbA1cSJiYnK/8uWLYsdO3bYozxERETkQBjvicgeFi8GBg4EdDqgalXg22+B/v2Lu1RE1rNLizMREREREZE5cXH/Jc2A/t9Bg9jyTCULE2ciIiIiIio0ly//lzQbaLXAlSvFUx5HwDEDSh4mzkREREREVGhq1gTccmUdajUQHl485XEEHDOg5GHiTEREREREhaZyZf09zWq1/rVaDSxcqJ9PVFIwcSYiIiIiokLVvz8QEwM0bar/lwODUUnDxJmIiIiIiApd5cpAaChbmqlkYuJMREREREREZAETZyIickgccZSIiIgcBRNnIiJySBxxlIiIiBwFE2ciIiIiIiIiC5g4ExEREREREVnAxJmIiIiIiIjIAibORERERERERBYwcSYiIiIiIiKygIkzERERERERkQVMnImIiIiIiIgsYOJMREREREREZAETZyIiIiIiIiILmDgTERERERERWcDEmYjIRVWqVNwlICIiIioZmDgTEbmo+fOLuwREREREJQMTZyIiIiIiIiILmDgTERERERERWcDEmYiIiIiIiMgCJs5EREREREREFjBxJiIiIiIiIrKAiTMRERERERGRBUyciYiIiIiIiCxg4kxERERERERkQYES53379kGlUmHPnj1WzSciIqKSh/GeiIhIz+bEOSsrC0OGDLF6PhEREZU8jPdERET/sTlxnjVrFsqWLYugoCCr5hMREVHJw3hPRIWhUqXiLgFRwbjbsnBcXBymTp2KAwcOoGnTpvnOz4tGo4FGo1FeJycn21IMIiIiKkT2iPeM9URkzvz5xV0CooKxqcV5xIgRGDRoEB577DGr5udlypQpCAoKUqYqVarYUgwiIiIqRPaI94z1RETkTKxOnLdu3Yrjx49j3LhxVs23ZMyYMUhKSlKmGzduWF9iIiIiKjT2iveM9URE5Eys7qq9atUq3Lp1CxUrVgQAJCUloWPHjihTpozZ+d9++y169OhhdlteXl7w8vKyQ/GJiIjInuwV7xnriYjImahERKxZ8O7du3jw4IHy+vHHH8e3336L5s2bIzs722R+x44d4e/vb1UhkpOTERQUhKSkJAQGBtr4FYjIGXTuDPz2W3GXgkjPleNSYcV7V96nRETkmGyJTVa3OIeGhiI0NFR57ebmhvLly6Ny5cpGyxnmW5s0ExERkeNgvCciIjJl8+OoiIiIiIiIiFyJTY+jyikxMdGm+URERFTyMN4TERGxxZmIiIiIiIjIIibORERERERERBYwcSYiIiIiIiKygIkzERERERERkQVMnImIiIiIiIgsYOJMREREREREZAETZyJyCJUqFXcJiIiIiIjMY+JMRA5h/vziLgERERERkXlMnImIiIiIiIgsYOJMREREREREZAETZyIiIiIiIiILmDgTERERERERWcDEmYiIiIiIiMgCJs5EREREREREFjBxJiIiIiIiIrKAiTMRERERERGRBUyciYiIiIiIiCxg4kxERERERERkARNnIiIiIiIiIguYOBMRERERERFZwMSZiIiIiIiIyAImzkREREREREQWMHEmIiIiIiIisoCJMxEREREREZEFTJyJiIiIiIiILGDiTERERERERGQBE2ciIiIiIiIiC5g4ExEREREREVnAxJmIiIiIiIjIggIlzvv27YNKpcKePXsAANHR0WjVqhUCAgLQunVrxMbG2rOMREREVAwY74mIiPRsTpyzsrIwZMgQo3kDBw7EI488gjNnziAkJATvvPOO3QpIRERERY/xnoiI6D/utq4wa9YslC1bFnFxcQCAzMxM7Nq1C2fOnEHVqlXRv39/vPHGG3YvKBERERUdxnsiIqL/2JQ4x8XFYerUqThw4ACaNm0KQF8jPX36dFSvXh0AcO/ePfj4+FjcjkajgUajUV4nJSUBAJKTk20qPBERUWEwxCMRKeaSFA97xHvGeiIicnQ2xXuxQZcuXeTD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",
      "text/plain": [
       "<Figure size 1200x800 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 置信区间可视化\n",
    "plt.figure(figsize=(12, 8)) # 设置画布大小\n",
    "\n",
    "np.random.seed(1234) # 设置随机种子，保证可复现性\n",
    "\n",
    "mu = 50 # 设置均值\n",
    "sigma = 5 # 设置标准差\n",
    "title_i = ['(a)', '(b)', '(c)', '(d)']\n",
    "n_ls = [10, 10, 10, 30]\n",
    "conf = [0.95, 0.80, 0.90, 0.90]\n",
    "for i in range(4):\n",
    "    plt.subplot(2, 2, i+1)\n",
    "    for j in range(30):\n",
    "        S = np.random.normal(loc=mu, scale=sigma, size=n_ls[i]) # 生成n_ls[i]个样本\n",
    "        S_mean = np.mean(S) # 计算S的均值\n",
    "        S_std = np.std(S, ddof=1) # 计算S的标准差\n",
    "        S_se = S_std/np.sqrt(len(S)) # 计算S的标准误差\n",
    "        S_ci = norm.interval(conf[i], loc=S_mean, scale=S_se) # 计算S的conf[i]置信区间\n",
    "        plt.plot([j, j], S_ci, color='b', linewidth=0.5) # 绘制置信区间\n",
    "        plt.plot(j, S_mean, marker='o', color='b', markersize=3) # 绘制样本均值\n",
    "    plt.axhline(y=mu, color='b', linestyle='-', linewidth=1.5) # 绘制真值\n",
    "    plt.ylim(42, 56) # 设置y轴范围\n",
    "    plt.title(f'{title_i[i]} n={n_ls[i]}, 总体均值{conf[i]*100}%置信区间') # 设置标题\n",
    "plt.suptitle('置信水平和样本量对置信区间的影响', fontsize=13) # 设置总标题\n",
    "plt.show() # 显示图形"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结论：\n",
    "- 样本量相同时，置信水平越大，置信区间就越宽。\n",
    "- 置信水平相同时，样本量越大，置信区间就越窄。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.1.2 评估估计量的标准"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "样本均值的均值：  50.0099\n",
      "样本中位数的均值：49.9710\n",
      "样本方差的均值：  100.1012\n"
     ]
    }
   ],
   "source": [
    "# 样本均值、样本中位数和样本方差的无偏性模拟\n",
    "np.random.seed(1234) # 设置随机种子，保证可复现性\n",
    "x, m, v = [], [], [] # 初始化样本均值、样本中位数和样本方差\n",
    "n = 10\n",
    "for i in range(10000):\n",
    "    d = np.random.normal(loc=50, scale=10, size=n) # 生成n个样本\n",
    "    x.append(np.mean(d)) # 计算样本均值\n",
    "    m.append(np.median(d)) # 计算样本中位数\n",
    "    v.append(np.var(d, ddof=1)) # 计算样本方差\n",
    "print(f'样本均值的均值：  {np.mean(x):.4f}')\n",
    "print(f'样本中位数的均值：{np.mean(m):.4f}')\n",
    "print(f'样本方差的均值：  {np.mean(v):.4f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "样本均值的方差：  0.1004\n",
      "样本中位数的方差：0.1372\n"
     ]
    }
   ],
   "source": [
    "# 样本均值和样本中位数的有效性模拟\n",
    "np.random.seed(1234) # 设置随机种子，保证可复现性\n",
    "x, m = [], [] # 初始化样本均值和样本中位数\n",
    "n = 10\n",
    "for i in range(10000):\n",
    "    d = np.random.normal(size=n) # 生成n个样本\n",
    "    x.append(np.mean(d)) # 计算样本均值\n",
    "    m.append(np.median(d)) # 计算样本中位数\n",
    "print(f'样本均值的方差：  {np.var(x, ddof=1):.4f}')\n",
    "print(f'样本中位数的方差：{np.var(m, ddof=1):.4f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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noiIyFnZOqYPHjwYx48flyXMdz7E7ubNm9L76O9lzJgxuHbtGnQ6HSoqKjBixAjZ+sOHD6OmpgZjx47FyZMnceHCBSQmJiIoKAgAkJCQgBkzZsDHxweBgYGPYDSJHJAgIodgtVrFzZs3hbu7uxBCCKPRKNra2oTVahVFRUVi6NChUl2j0Sh++eUX0adPHxEXFyeqq6uFSqUSXl5eQqlUCk9PT9G9e3cRHBwsqqqqRGhoqBgwYIAwGAwiIyNDKJVKERUVJT788ENRV1cnrFarWLt2raivr5faaGlpEQCEyWSS9TMiIkKUlpYKIYQYOnSo0Gg0IiwsTPp069ZNHDhwwAYjRkRE9N9kq5h+N2FhYaKoqKjLfvbr10+cOXOmQ/k333wjYmJiOt3mu+++E7GxseK5554TAwcOFGlpaaK1tVUIIYROpxNqtVpotdou2yZyVrwCT+QgFAoFTCaTNDXuzunqQgjpu0qlQlBQEBYtWoTXX38dbm5u0oPnxo4di6lTp2Lu3LlS/aNHj6KpqQlubm5ITU1FWloawsLCZL+fmZkJ4NaVg/LycpSWlsLLy0s2tQ+4NeXeYDDAbDYD6PwKvBACRqMRbm5u/3BUiIiI7I+tYvrdGI3GLp+BAwAmkwlWqxXBwcFobGyUHoin1+thsVjg6+sLAPDz88Nvv/0GABg/fjzCwsIwb948qFQqFBcXIzMzE4sWLcL06dMRGxuLjz76CMOHD8ekSZPuZ7iInAoTeCIH0p4YCyE6PFXWYDDIlnv27Cm9ruXOem1tbbIyb29v6fU0ERERXfYjMTERGo0G77//fod1er0eR44cwfTp06FSqWQHFe3S09MREhKCAwcOdNkWERGRI7JFTL+bv/76q8N2nWlubobJZEJFRQWUSuVdn2jffv/8999/j08//RSlpaXIzMzEq6++ira2NixYsACDBg2CVquFVqtFXl4e4uPjsX79eixdurTLfhA5E4W4/RQeETkks9kMvV4PtVr9b3eFiIiI/gF7juk//PAD6urqkJycDE9PT6l8z549iIiIwIABA6SyQ4cOYfDgwXb5dxI9TkzgiYiIiIiIiOwAXyNHREREREREZAeYwBMRERERERHZASbwRERERERERHaACTwRERERERGRHWACT0RERERERGQHmMATERERERER2QEm8ERERERERER2gAk8ERERERERkR1gAk9ERERERERkB/4HjGEvxD7uaWYAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1200x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制样本均值和样本中位数的分布的直方图\n",
    "def plot_dis(df, ax, xlabel):\n",
    "    df.plot(kind='hist', bins=20, ax=ax, density=True, alpha=0.5, legend=False)\n",
    "    df.plot(kind='density', ax=ax, linewidth=2, legend=False, color='b')\n",
    "    ax.set_ylim(0, 1.3)\n",
    "    ax.set_xlim(-1.5, 1.5)\n",
    "    ax.set_xlabel(xlabel)\n",
    "    ax.set_title(xlabel+'的分布')\n",
    "\n",
    "plt.subplots(1, 2, figsize=(12, 5)) # 设置画布大小\n",
    "ax1 = plt.subplot(121) # 绘制第一个子图\n",
    "plot_dis(pd.DataFrame(x), ax1, '样本均值') # 绘制样本均值的分布\n",
    "ax2 = plt.subplot(122) # 绘制第二个子图\n",
    "plot_dis(pd.DataFrame(m), ax2, '样本中位数') # 绘制样本中位数的分布\n",
    "plt.show() # 显示图形"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>总体均值</th>\n",
       "      <th>xbar10</th>\n",
       "      <th>xbar100</th>\n",
       "      <th>xbar500</th>\n",
       "      <th>xbar900</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>49.665586</td>\n",
       "      <td>48.45996</td>\n",
       "      <td>50.165167</td>\n",
       "      <td>49.568964</td>\n",
       "      <td>49.636309</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        总体均值    xbar10    xbar100    xbar500    xbar900\n",
       "0  49.665586  48.45996  50.165167  49.568964  49.636309"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 样本均值一致性模拟\n",
    "# 总体均值和不同样本量的样本均值\n",
    "np.random.seed(2020) # 设置随机种子，保证可复现性\n",
    "N = np.random.normal(loc=50, scale=10, size=1000) # 生成1000个样本\n",
    "mu = np.mean(N) # 计算总体均值\n",
    "\n",
    "xbar10 = np.mean(np.random.choice(N, 10, replace=False)) # 计算样本均值\n",
    "xbar100 = np.mean(np.random.choice(N, 100, replace=False)) # 计算样本均值\n",
    "xbar500 = np.mean(np.random.choice(N, 500, replace=False)) # 计算样本均值\n",
    "xbar900 = np.mean(np.random.choice(N, 900, replace=False)) # 计算样本均值\n",
    "\n",
    "pd.DataFrame(\n",
    "    [mu, xbar10, xbar100, xbar500, xbar900],\n",
    "    ['总体均值', 'xbar10', 'xbar100', 'xbar500', 'xbar900'],\n",
    ").T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>d10</th>\n",
       "      <th>d100</th>\n",
       "      <th>d500</th>\n",
       "      <th>d900</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.205626</td>\n",
       "      <td>0.499581</td>\n",
       "      <td>-0.096622</td>\n",
       "      <td>-0.029277</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        d10      d100      d500      d900\n",
       "0 -1.205626  0.499581 -0.096622 -0.029277"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 样本均值与总体均值mu的差值d\n",
    "pd.DataFrame([{\n",
    "        'd10': xbar10 - mu,\n",
    "        'd100': xbar100 - mu,\n",
    "        'd500': xbar500 - mu,\n",
    "        'd900': xbar900 - mu,\n",
    "}])"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.2 总体均值的区间估计"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.2.1 一个总体均值的估计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>耗油量</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>8.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7.8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   耗油量\n",
       "0  7.9\n",
       "1  8.1\n",
       "2  7.5\n",
       "3  8.4\n",
       "4  7.8"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 大样本 n>=30\n",
    "example5_1 = pd.read_csv('./pydata/chap05/example5_1.csv', encoding='gbk') # 读取数据\n",
    "example5_1.head() # 显示前5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[7.8359],\n",
       "       [8.0991]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "interval = norm.interval(0.90, loc=np.mean(example5_1), scale=st.sem(example5_1)) # 计算90%置信区间\n",
    "np.round(interval, 4) # 保留4位小数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>食品重量</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>112.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>102.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>116.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>136.8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    食品重量\n",
       "0  112.5\n",
       "1  102.6\n",
       "2  100.0\n",
       "3  116.6\n",
       "4  136.8"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 小样本 n<30\n",
    "example5_2 = pd.read_csv('./pydata/chap05/example5_2.csv', encoding='gbk') # 读取数据\n",
    "example5_2.head() # 显示前5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[101.3748],\n",
       "       [109.3452]])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "interval = st.t.interval(\n",
    "    0.95, len(example5_2)-1, \n",
    "    loc=np.mean(example5_2), scale=st.sem(example5_2)\n",
    ") # 计算95%置信区间 默认自由度为n, 这里需要减1\n",
    "np.round(interval, 4) # 保留4位小数"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.2.2 两个总体均值差的估计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>男性工资</th>\n",
       "      <th>女性工资</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7919</td>\n",
       "      <td>5474</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>7556</td>\n",
       "      <td>6475</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7890</td>\n",
       "      <td>5744</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>8219</td>\n",
       "      <td>6028</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>8778</td>\n",
       "      <td>6420</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   男性工资  女性工资\n",
       "0  7919  5474\n",
       "1  7556  6475\n",
       "2  7890  5744\n",
       "3  8219  6028\n",
       "4  8778  6420"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 独立大样本\n",
    "example5_3 = pd.read_csv('./pydata/chap05/example5_3.csv', encoding='gbk') # 读取数据\n",
    "example5_3.head() # 显示前5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "男女平均工资之差的95.0%的置信区间：[1826.0516 2212.3984]\n"
     ]
    }
   ],
   "source": [
    "x1 = example5_3['男性工资']\n",
    "x2 = example5_3['女性工资']\n",
    "\n",
    "conf_level = 0.95 # 置信水平\n",
    "\n",
    "xbar1 = x1.mean() # 计算样本均值\n",
    "s1 = x1.std() # 计算样本标准差\n",
    "n1 = len(x1) # 计算样本量\n",
    "\n",
    "xbar2 = x2.mean() # 计算样本均值\n",
    "s2 = x2.std() # 计算样本标准差\n",
    "n2 = len(x2) # 计算样本量\n",
    "\n",
    "interval = norm.interval(conf_level, loc=(xbar1-xbar2), scale=np.sqrt(s1**2/n1 + s2**2/n2)) # 计算置信区间\n",
    "print(f'男女平均工资之差的{conf_level*100}%的置信区间：{np.round(interval, 4)}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>方法一</th>\n",
       "      <th>方法二</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>28.3</td>\n",
       "      <td>27.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>30.1</td>\n",
       "      <td>22.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>29.0</td>\n",
       "      <td>31.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>37.6</td>\n",
       "      <td>33.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>32.1</td>\n",
       "      <td>20.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    方法一   方法二\n",
       "0  28.3  27.6\n",
       "1  30.1  22.2\n",
       "2  29.0  31.0\n",
       "3  37.6  33.8\n",
       "4  32.1  20.0"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 独立小样本\n",
    "example5_4 = pd.read_csv('./pydata/chap05/example5_4.csv', encoding='gbk') # 读取数据\n",
    "example5_4.head() # 显示前5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "方法一的平均时间为32.50, 方法二的平均时间为28.80\n",
      "假定方差相等, 两方法组装时间差值95.0%置信区间为[0.1403 7.2597]\n"
     ]
    }
   ],
   "source": [
    "# 假设总体方差相等\n",
    "x1 = example5_4['方法一']\n",
    "x2 = example5_4['方法二']\n",
    "\n",
    "conf_level = 0.95 # 置信水平\n",
    "xbar1 = x1.mean() # 计算样本均值\n",
    "xbar2 = x2.mean() # 计算样本均值\n",
    "\n",
    "t_value, p_value, df = ttest_ind(x1, x2, alternative='two-sided', usevar='pooled') # 计算t检验的值\n",
    "interval = t.interval(conf_level, df, loc=(xbar1-xbar2), scale=(xbar1 - xbar2)/t_value) # 计算置信区间\n",
    "print(f'方法一的平均时间为{xbar1:.2f}, 方法二的平均时间为{xbar2:.2f}')\n",
    "print(f'假定方差相等, 两方法组装时间差值{conf_level*100}%置信区间为{np.round(interval, 4)}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "方法一的平均时间为32.50, 方法二的平均时间为28.80\n",
      "假定方差不等, 两方法组装时间差值95.0%置信区间为[0.1384 7.2616]\n",
      "自由度为21.8029\n"
     ]
    }
   ],
   "source": [
    "# 假设总体方差不等\n",
    "t_value, p_value, df = ttest_ind(x1, x2, alternative='two-sided', usevar='unequal') # 计算t检验的值\n",
    "interval = t.interval(conf_level, df, loc=(xbar1-xbar2), scale=(xbar1 - xbar2)/t_value) # 计算置信区间\n",
    "print(f'方法一的平均时间为{xbar1:.2f}, 方法二的平均时间为{xbar2:.2f}')\n",
    "print(f'假定方差不等, 两方法组装时间差值{conf_level*100}%置信区间为{np.round(interval, 4)}')\n",
    "print(f'自由度为{df:.4f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>学生编号</th>\n",
       "      <th>试卷A</th>\n",
       "      <th>试卷B</th>\n",
       "      <th>差值d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>78</td>\n",
       "      <td>71</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>63</td>\n",
       "      <td>44</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>72</td>\n",
       "      <td>61</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>89</td>\n",
       "      <td>84</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>91</td>\n",
       "      <td>74</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   学生编号  试卷A  试卷B  差值d\n",
       "0     1   78   71    7\n",
       "1     2   63   44   19\n",
       "2     3   72   61   11\n",
       "3     4   89   84    5\n",
       "4     5   91   74   17"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 配对样本\n",
    "example5_5 = pd.read_csv('./pydata/chap05/example5_5.csv', encoding='gbk') # 读取数据\n",
    "example5_5.head() # 显示前5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "两套试卷分数之差的95.0%置信区间为：[ 6.3273 15.6727]\n"
     ]
    }
   ],
   "source": [
    "x1 = example5_5['试卷A']\n",
    "x2 = example5_5['试卷B']\n",
    "d = x1 - x2\n",
    "\n",
    "conf_level = 0.95 # 置信水平\n",
    "dbar = d.mean() # 计算样本均值\n",
    "sd = d.std() # 计算样本标准差\n",
    "n = len(d) # 计算样本量\n",
    "\n",
    "interval = t.interval(conf_level, n-1, loc=dbar, scale=sd/np.sqrt(n)) # 计算置信区间\n",
    "print(f'两套试卷分数之差的{conf_level*100}%置信区间为：{np.round(interval, 4)}')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.3 总体比例的区间估计"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.3.1 一个总体比例的估计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "赞成该项改革的人数比例95%置信区间为：[0.6082 0.6918]\n"
     ]
    }
   ],
   "source": [
    "# 大样本\n",
    "conf_level = 0.95 # 置信水平\n",
    "n = 500 # 样本量\n",
    "x = 325 # 赞成的人数\n",
    "p = x/n # 样本比例\n",
    "\n",
    "interval = norm.interval(conf_level, loc=p, scale=np.sqrt(p*(1-p)/n)) # 计算置信区间\n",
    "print(f'赞成该项改革的人数比例95%置信区间为：{np.round(interval, 4)}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "赞成该项改革的人数比例95%置信区间为：[0.6071 0.6905]\n"
     ]
    }
   ],
   "source": [
    "# 任意大小样本（Agresti-Coull方法）\n",
    "conf_level = 0.95 # 置信水平\n",
    "n1 = 500 + 4 # 修正后的样本量\n",
    "p1 = (325+2) / n1 # 修正后的样本比例\n",
    "\n",
    "interval = norm.interval(conf_level, loc=p1, scale=np.sqrt(p1*(1-p1)/n1)) # 计算置信区间\n",
    "print(f'赞成该项改革的人数比例95%置信区间为：{np.round(interval, 4)}')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.3.2 两个总体比例差的估计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "女性与男性收视率差值的95%的置信区间为：[0.0668 0.1932]\n"
     ]
    }
   ],
   "source": [
    "# 大样本\n",
    "conf_level = 0.95 # 置信水平\n",
    "n1 = 500 # 样本量\n",
    "n2 = 400 # 样本量\n",
    "p1 = 225 / n1 # 样本比例\n",
    "p2 = 128 / n2 # 样本比例\n",
    "interval = norm.interval(conf_level, loc=(p1-p2), scale=np.sqrt(p1*(1-p1)/n1 + p2*(1-p2)/n2)) # 计算置信区间\n",
    "print(f'女性与男性收视率差值的95%的置信区间为：{np.round(interval, 4)}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "女性与男性收视率差值的95%的置信区间为：[0.0662 0.1924]\n"
     ]
    }
   ],
   "source": [
    "# 任意大小样本（Agresti-Coull方法）\n",
    "conf_level = 0.95 # 置信水平\n",
    "n1 = 500 + 2 # 修正后的样本量\n",
    "n2 = 400 + 2 # 修正后的样本量\n",
    "p1 = (225+1) / n1 # 修正后的样本比例\n",
    "p2 = (128+1) / n2 # 修正后的样本比例\n",
    "interval = norm.interval(conf_level, loc=(p1-p2), scale=np.sqrt(p1*(1-p1)/n1 + p2*(1-p2)/n2)) # 计算置信区间\n",
    "print(f'女性与男性收视率差值的95%的置信区间为：{np.round(interval, 4)}')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.4 总体方差的区间估计"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.4.1 一个总体方差的估计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>食品重量</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>112.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>102.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>116.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>136.8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    食品重量\n",
       "0  112.5\n",
       "1  102.6\n",
       "2  100.0\n",
       "3  116.6\n",
       "4  136.8"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "example5_2 = pd.read_csv('./pydata/chap05/example5_2.csv', encoding='gbk') # 读取数据\n",
    "example5_2.head() # 显示前5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "食品重量的方差的95.0%置信区间为：[56.82897, 180.38811]\n"
     ]
    }
   ],
   "source": [
    "x = example5_2['食品重量']\n",
    "\n",
    "conf_level = 0.95 # 置信水平\n",
    "sigma2 = x.var() # 方差\n",
    "n = len(x) # 样本量\n",
    "\n",
    "LCI = (n-1) * sigma2 / chi2.ppf(q=(1+conf_level)/2, df=n-1) # 计算置信区间\n",
    "UCI = (n-1) * sigma2 / chi2.ppf(q=(1-conf_level)/2, df=n-1) # 计算置信区间\n",
    "print(f'食品重量的方差的{conf_level*100}%置信区间为：[{LCI:.5f}, {UCI:.5f}]')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.4.2 两个总体方差比的估计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>方法一</th>\n",
       "      <th>方法二</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>28.3</td>\n",
       "      <td>27.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>30.1</td>\n",
       "      <td>22.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>29.0</td>\n",
       "      <td>31.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>37.6</td>\n",
       "      <td>33.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>32.1</td>\n",
       "      <td>20.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    方法一   方法二\n",
       "0  28.3  27.6\n",
       "1  30.1  22.2\n",
       "2  29.0  31.0\n",
       "3  37.6  33.8\n",
       "4  32.1  20.0"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "example5_4 = pd.read_csv('./pydata/chap05/example5_4.csv', encoding='gbk') # 读取数据\n",
    "example5_4.head() # 显示前5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "两种方法组装产品所需时间方差比的95.0%置信区间为：[0.23788, 2.87044]\n"
     ]
    }
   ],
   "source": [
    "x1 = example5_4['方法一']\n",
    "x2 = example5_4['方法二']\n",
    "\n",
    "conf_level = 0.95 # 置信水平\n",
    "var1 = x1.var() # 计算样本方差\n",
    "var2 = x2.var() # 计算样本方差\n",
    "n1 = len(x1) # 计算样本量\n",
    "n2 = len(x2) # 计算样本量\n",
    "\n",
    "LCI = (var1 / var2) / f.ppf(q=(1+conf_level)/2, dfn=n1-1, dfd=n2-1) # 计算置信区间\n",
    "UCI = (var1 / var2) / f.ppf(q=(1-conf_level)/2, dfn=n1-1, dfd=n2-1) # 计算置信区间\n",
    "print(f'两种方法组装产品所需时间方差比的{conf_level*100}%置信区间为：[{LCI:.5f}, {UCI:.5f}]')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 习题"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>上网时间</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3.1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   上网时间\n",
       "0   3.3\n",
       "1   4.4\n",
       "2   2.1\n",
       "3   4.7\n",
       "4   3.1"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('./exercise/chap05/exercise5_1.csv', encoding='gbk') # 读取数据\n",
    "df.head() # 显示前5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "置信水平为90.0%的置信区间为：[2.8755 3.7579]\n",
      "置信水平为95.0%的置信区间为：[2.791  3.8424]\n",
      "置信水平为99.0%的置信区间为：[2.6258 4.0076]\n"
     ]
    }
   ],
   "source": [
    "# 求该校大学生平均上网时间的置信区间，置信水平分别为90%、95%和99%。\n",
    "x = df['上网时间']\n",
    "\n",
    "def cal_conf_interval(x, conf_level):\n",
    "    xbar = x.mean() # 计算样本均值\n",
    "    s = x.std() # 计算样本标准差\n",
    "    n = len(x) # 计算样本量\n",
    "    interval = norm.interval(conf_level, loc=xbar, scale=s/np.sqrt(n)) # 计算置信区间\n",
    "    print(f'置信水平为{conf_level*100}%的置信区间为：{np.round(interval, 4)}')\n",
    "\n",
    "cal_conf_interval(x, 0.90) # 计算90%置信区间\n",
    "cal_conf_interval(x, 0.95) # 计算95%置信区间\n",
    "cal_conf_interval(x, 0.99) # 计算99%置信区间"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "赞成采用新设施的户数比例95%置信区间为：[0.507 0.773]\n"
     ]
    }
   ],
   "source": [
    "# 估计总体中赞成采用新设施的户数比例的置信区间，置信水平为95%。\n",
    "conf_level = 0.95 # 置信水平\n",
    "n = 50 # 样本量\n",
    "x = 32 # 赞成的人数\n",
    "p = x/n # 样本比例\n",
    "\n",
    "interval = norm.interval(conf_level, loc=p, scale=np.sqrt(p*(1-p)/n)) # 计算置信区间\n",
    "print(f'赞成采用新设施的户数比例95%置信区间为：{np.round(interval, 4)}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "赞成采用新设施的户数比例95%置信区间为：[0.5008 0.7584]\n"
     ]
    }
   ],
   "source": [
    "# 采用Agresti-Coull区间\n",
    "conf_level = 0.95 # 置信水平\n",
    "n = 50 + 4 # 修正后的样本量\n",
    "x = 32 + 2 # 修正后的赞成的人数\n",
    "p = x/n # 修正后的样本比例\n",
    "\n",
    "interval = norm.interval(conf_level, loc=p, scale=np.sqrt(p*(1-p)/n)) # 计算置信区间\n",
    "print(f'赞成采用新设施的户数比例95%置信区间为：{np.round(interval, 4)}')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>方式1</th>\n",
       "      <th>方式2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6.5</td>\n",
       "      <td>4.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6.6</td>\n",
       "      <td>5.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6.7</td>\n",
       "      <td>5.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6.8</td>\n",
       "      <td>6.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7.1</td>\n",
       "      <td>6.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>7.3</td>\n",
       "      <td>7.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7.4</td>\n",
       "      <td>7.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>7.7</td>\n",
       "      <td>8.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>7.7</td>\n",
       "      <td>9.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10.7</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    方式1   方式2\n",
       "0   6.5   4.2\n",
       "1   6.6   5.4\n",
       "2   6.7   5.8\n",
       "3   6.8   6.2\n",
       "4   7.1   6.7\n",
       "5   7.3   7.7\n",
       "6   7.4   7.7\n",
       "7   7.7   8.5\n",
       "8   7.7   9.3\n",
       "9  10.7  10.0"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('./exercise/chap05/exercise5_3.csv', encoding='gbk') # 读取数据\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第一种排队方式等待时间均值95%置信区间为：[6.6925 8.2075]\n"
     ]
    }
   ],
   "source": [
    "# (1) 构建第一种排队方式等待时间均值的95%的置信区间。\n",
    "x = df['方式1']\n",
    "conf_level = 0.95 # 置信水平\n",
    "xbar = x.mean() # 计算样本均值\n",
    "s = x.std() # 计算样本标准差\n",
    "n = len(x) # 计算样本量\n",
    "interval = norm.interval(conf_level, loc=xbar, scale=s/np.sqrt(n)) # 计算置信区间\n",
    "print(f'第一种排队方式等待时间均值95%置信区间为：{np.round(interval, 4)}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第二种排队方式等待时间方差95%置信区间为：[1.56996, 11.05952]\n"
     ]
    }
   ],
   "source": [
    "# (2) 构建第二种排队方式等待时间方差的95%的置信区间。\n",
    "x = df['方式2']\n",
    "conf_level = 0.95 # 置信水平\n",
    "var = x.var() # 计算样本方差\n",
    "n = len(x) # 计算样本量\n",
    "LCI = (n-1) * var / chi2.ppf(q=(1+conf_level)/2, df=n-1) # 计算置信区间\n",
    "UCI = (n-1) * var / chi2.ppf(q=(1-conf_level)/2, df=n-1) # 计算置信区间\n",
    "print(f'第二种排队方式等待时间方差95%置信区间为：[{LCI:.5f}, {UCI:.5f}]')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "方法一的平均时间为7.45, 方法二的平均时间为7.15\n",
      "\n",
      "假定方差相等: \n",
      "两种方式排队时间均值差值95%置信区间为：[-1.1574  1.7574]\n",
      "\n",
      "假定方差不等: \n",
      "两种方式排队时间均值差值95%置信区间为：[-1.1726  1.7726]\n",
      "自由度为15.7379\n"
     ]
    }
   ],
   "source": [
    "# (3) 构建两种方式排队时间均值差值的95%的置信区间：\n",
    "# 假定总体方差相等\n",
    "x1 = df['方式1']\n",
    "x2 = df['方式2']\n",
    "conf_level = 0.95 # 置信水平\n",
    "xbar1 = x1.mean() # 计算样本均值\n",
    "xbar2 = x2.mean() # 计算样本均值\n",
    "\n",
    "t_value, p_value, dof = ttest_ind(x1, x2, alternative='two-sided', usevar='pooled') # 计算t检验的值\n",
    "interval = t.interval(conf_level, dof, loc=(xbar1-xbar2), scale=(xbar1 - xbar2)/t_value) # 计算置信区间\n",
    "print(f'方法一的平均时间为{xbar1:.2f}, 方法二的平均时间为{xbar2:.2f}')\n",
    "print(f'\\n假定方差相等: \\n两种方式排队时间均值差值95%置信区间为：{np.round(interval, 4)}')\n",
    "\n",
    "# 假定总体方差不等\n",
    "t_value, p_value, dof = ttest_ind(x1, x2, alternative='two-sided', usevar='unequal') # 计算t检验的值\n",
    "interval = t.interval(conf_level, dof, loc=(xbar1-xbar2), scale=(xbar1 - xbar2)/t_value) # 计算置信区间\n",
    "print(f'\\n假定方差不等: \\n两种方式排队时间均值差值95%置信区间为：{np.round(interval, 4)}')\n",
    "print(f'自由度为{dof:.4f}')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人员编号</th>\n",
       "      <th>方法1</th>\n",
       "      <th>方法2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>78</td>\n",
       "      <td>71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>63</td>\n",
       "      <td>44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>72</td>\n",
       "      <td>61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>89</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>91</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>49</td>\n",
       "      <td>51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>68</td>\n",
       "      <td>55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>76</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>85</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>55</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人员编号  方法1  方法2\n",
       "0     1   78   71\n",
       "1     2   63   44\n",
       "2     3   72   61\n",
       "3     4   89   84\n",
       "4     5   91   74\n",
       "5     6   49   51\n",
       "6     7   68   55\n",
       "7     8   76   60\n",
       "8     9   85   77\n",
       "9    10   55   39"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('./exercise/chap05/exercise5_4.csv', encoding='gbk') # 读取数据\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "两种方法平均自信心得分之差的95%的置信区间为：[ 6.3273 15.6727]\n"
     ]
    }
   ],
   "source": [
    "# 构建两种方法平均自信心得分之差mud=mu1-mu2的95%的置信区间。\n",
    "x1 = df['方法1']\n",
    "x2 = df['方法2']\n",
    "d = x1 - x2\n",
    "\n",
    "conf_level = 0.95 # 置信水平\n",
    "dbar = d.mean() # 计算样本均值\n",
    "sd = d.std() # 计算样本标准差\n",
    "n = len(d) # 计算样本量\n",
    "\n",
    "interval = t.interval(conf_level, n-1, loc=dbar, scale=sd/np.sqrt(n)) # 计算置信区间\n",
    "print(f'两种方法平均自信心得分之差的95%的置信区间为：{np.round(interval, 4)}')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "n1 = n2 = 250 # 样本量\n",
    "p1 = 0.4 # 样本比例\n",
    "p2 = 0.3 # 样本比例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "pi1-pi2的90%的置信区间为：[0.0302 0.1698]\n"
     ]
    }
   ],
   "source": [
    "# (1) 求pi1-pi2的90%的置信区间。\n",
    "conf_level = 0.90 # 置信水平\n",
    "interval = norm.interval(conf_level, loc=(p1-p2), scale=np.sqrt(p1*(1-p1)/n1 + p2*(1-p2)/n2)) # 计算置信区间\n",
    "print(f'pi1-pi2的90%的置信区间为：{np.round(interval, 4)}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "pi1-pi2的95%的置信区间为：[0.0168 0.1832]\n"
     ]
    }
   ],
   "source": [
    "# (2) 求pi1-pi2的95%的置信区间。\n",
    "conf_level = 0.95 # 置信水平\n",
    "interval = norm.interval(conf_level, loc=(p1-p2), scale=np.sqrt(p1*(1-p1)/n1 + p2*(1-p2)/n2)) # 计算置信区间\n",
    "print(f'pi1-pi2的95%的置信区间为：{np.round(interval, 4)}')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.6"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>机器1</th>\n",
       "      <th>机器2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.45</td>\n",
       "      <td>3.22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3.20</td>\n",
       "      <td>3.38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.22</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3.50</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.95</td>\n",
       "      <td>3.34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>3.16</td>\n",
       "      <td>3.28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>3.20</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>3.22</td>\n",
       "      <td>3.28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2.98</td>\n",
       "      <td>3.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>3.75</td>\n",
       "      <td>3.20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>3.38</td>\n",
       "      <td>3.29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>3.45</td>\n",
       "      <td>3.35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>3.48</td>\n",
       "      <td>3.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>3.18</td>\n",
       "      <td>3.34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>3.90</td>\n",
       "      <td>3.35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>3.70</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>3.28</td>\n",
       "      <td>3.05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>3.35</td>\n",
       "      <td>3.33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>3.20</td>\n",
       "      <td>3.27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>3.12</td>\n",
       "      <td>3.28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>3.25</td>\n",
       "      <td>3.25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     机器1   机器2\n",
       "0   3.45  3.22\n",
       "1   3.20  3.38\n",
       "2   3.22  3.30\n",
       "3   3.50  3.30\n",
       "4   2.95  3.34\n",
       "5   3.16  3.28\n",
       "6   3.20  3.30\n",
       "7   3.22  3.28\n",
       "8   2.98  3.19\n",
       "9   3.75  3.20\n",
       "10  3.38  3.29\n",
       "11  3.45  3.35\n",
       "12  3.48  3.16\n",
       "13  3.18  3.34\n",
       "14  3.90  3.35\n",
       "15  3.70  3.30\n",
       "16  3.28  3.05\n",
       "17  3.35  3.33\n",
       "18  3.20  3.27\n",
       "19  3.12  3.28\n",
       "20  3.25  3.25"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('./exercise/chap05/exercise5_6.csv', encoding='gbk') # 读取数据\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "两个总体方差比的95%的置信区间为：[4.05193, 24.61011]\n"
     ]
    }
   ],
   "source": [
    "# 计算两个总体方差比的95%的置信区间。\n",
    "x1 = df['机器1']\n",
    "x2 = df['机器2']\n",
    "\n",
    "conf_level = 0.95 # 置信水平\n",
    "var1 = x1.var() # 计算样本方差\n",
    "var2 = x2.var() # 计算样本方差\n",
    "n1 = len(x1) # 计算样本量\n",
    "n2 = len(x2) # 计算样本量\n",
    "\n",
    "LCI = (var1 / var2) / f.ppf(q=(1+conf_level)/2, dfn=n1-1, dfd=n2-1) # 计算置信区间\n",
    "UCI = (var1 / var2) / f.ppf(q=(1-conf_level)/2, dfn=n1-1, dfd=n2-1) # 计算置信区间\n",
    "print(f'两个总体方差比的95%的置信区间为：[{LCI:.5f}, {UCI:.5f}]')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.10"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
